﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Data;
using System.Globalization;
using System.IO;

namespace produccion.forms
{
    /// <summary>
    /// Lógica de interacción para FRMreponovep.xaml
    /// </summary>
    public partial class FRMreponovep : Window
    {
        public FRMreponovep()
        {
            InitializeComponent();
            rnovp.consSemFec();
        }

        private void butGua_Click(object sender, RoutedEventArgs e)
        {
            rnovp.guardar(wPnot);
            texOrd.Focus();
            texOrd.Select(0, 0);
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            rnovp.proceso = ((Button)sender).Tag.ToString();
            if (!((Button)sender).Tag.ToString().Equals("DEV")) {
                rnovp.nompro = ((Button)sender).Content.ToString();
                rnovp.consCanRep();
            }

        }

        private void dataGrid1_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            var elemento = e.OriginalSource as UIElement;
            if (e.Key == Key.Enter && elemento != null)
            {
                e.Handled = true;
                elemento.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
            }
        }

        private void reponov_KeyDown(object sender, KeyEventArgs e)
        {
            var elemento = e.OriginalSource as UIElement;
            if (e.Key == Key.F3 && elemento != null)
            {
                if (MDOgeneral.logBusquedadAbierta == true) { MDOgeneral.logBusquedadAbierta = false; }
            }

            if (e.Key == Key.F4 && elemento != null)
            {
                if (MDOgeneral.logBusquedadAbierta1 == true) { MDOgeneral.logBusquedadAbierta1 = false; }
            }

            if (e.Key == Key.F5 && elemento != null)
            {
                if (MDOgeneral.logBusquedadAbierta2 == true) { MDOgeneral.logBusquedadAbierta2 = false; }
            }
        }
    }


    public class reponovep:ObservableObject
    {

        DataTable _dtOrdTal=new DataTable();
        public DataTable dtOrdTal {
            get { return _dtOrdTal; }
            set { _dtOrdTal = value;
            RaisePropertyChangedEvent("dtOrdTal");
            }       
        }

        #region metodo

        //Consulta por el cambio de orden
        public void consultar() {
            try {
                conEncOrd();
                conCanOrdTal();
                consCanRep();
                consEstPro();
                llenarImagen();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        //Consultar cantidad ordenada por talla
        public void conCanOrdTal() {
            try {

                clases.CLSDETORDP detord = new clases.CLSDETORDP { NROORD_DOP = orden };
                DataTable valores=detord.conCanOrdTal();
                DataTable val = new DataTable();

                foreach (DataRow r in valores.Rows) {

                    val.Columns.Add(r["codtal_pro"].ToString());
                }
                val.Columns.Add("Total");

                DataRow dr = val.NewRow();
                double total = 0;
                foreach (DataRow r in valores.Rows)
                {
                    if (r["canord_dop"]!=DBNull.Value)
                    {
                    dr[r["codtal_pro"].ToString()] = r["canord_dop"].ToString();
                    total = Convert.ToDouble(r["canord_dop"]) + total;
                    }
                }
                dr["Total"] = total;
                totals = total;

                val.Rows.Add(dr);
                if (val.Columns.Count > 1)
                {
                    dtOrdTal = val;
                }
                else {
                    dtOrdTal.Clear();
                    dtOrdTal.Columns.Clear();
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        //Consultar encabezado de la orden
        public void conEncOrd() {
            try {
                clases.CLSENCORDP EncOrd = new clases.CLSENCORDP {NROORD_EOP=orden };
                DataTable valores=EncOrd.consEncOrd();

                if (valores.Rows.Count > 0)
                {
                    cortador1 = valores.Rows[0]["nomcor1"].ToString().Trim();
                    cortador2 = valores.Rows[0]["nomcor2"].ToString().Trim();
                    cortador3 = valores.Rows[0]["nomcor3"].ToString().Trim();
                    codcor1 = valores.Rows[0]["codcor1_eop"].ToString().Trim();
                    codcor2 = valores.Rows[0]["codcor2_eop"].ToString().Trim();
                    codcor3 = valores.Rows[0]["codcor3_eop"].ToString().Trim();
                    porcort1 = valores.Rows[0]["porcor1_eop"] != DBNull.Value?Convert.ToDouble(valores.Rows[0]["porcor1_eop"]):0;
                    porcort2 =valores.Rows[0]["porcor2_eop"] != DBNull.Value?Convert.ToDouble(valores.Rows[0]["porcor2_eop"]):0;
                    porcort3 =valores.Rows[0]["porcor3_eop"] != DBNull.Value?Convert.ToDouble(valores.Rows[0]["porcor3_eop"]):0;
                    pedido = Convert.ToInt32(valores.Rows[0]["nroped_eop"]);
                    cliente = valores.Rows[0]["codcli_eop"].ToString().Trim() + "-" + valores.Rows[0]["nomcli_cli"].ToString().Trim();
                    nomref = valores.Rows[0]["nomref_ref"].ToString().Trim();
                    nomcol = valores.Rows[0]["nomcol_col"].ToString().Trim();
                    codcol = valores.Rows[0]["codcol_eop"].ToString().Trim();
                    codref = valores.Rows[0]["codref_eop"].ToString().Trim();
                    desref = "("+nomcol + ") " + nomref;

                }
                else {
                    cortador1 = "";
                    cortador2 ="";
                    cortador3 = "";
                    porcort1 = 0;
                    porcort2 = 0;
                    porcort3 = 0;
                    pedido = 0;
                    cliente = "";
                    codcol = "";
                    codref = "";
                    nomref = "";
                    nomcol = "";
                    desref = "";
                }

            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }        
        }

        //Consultar semana y fechas 
        public void consSemFec() {
            try {
                clases.CLSCALEND calend = new clases.CLSCALEND {FECHA_CAL=fecrep };
                DataTable valores = calend.consDesHasta();

                if (valores.Rows.Count > 0)
                {
                    semana = Convert.ToInt32(valores.Rows[0]["nrosem_sem"]);
                    desde = Convert.ToDateTime(valores.Rows[0]["desde_sem"]);
                    hasta = Convert.ToDateTime(valores.Rows[0]["hasta_sem"]);
                }
                else {
                    semana = 0;
                    desde =DateTime.Today;
                    hasta =DateTime.Today;
                }

            }
            catch (Exception ex) {MessageBox.Show(ex.Message);}
        }
        
        //Consultar cantidad reportada
        public void consCanRep() {
            try {
                clases.CLSREPPRO reppro = new clases.CLSREPPRO { NROORD_RPP = orden, CODPRC_RPP = proceso };
                reppro.consCanRep();
                yarepor = reppro.CANREP_RPP;
                arepor = totals - yarepor;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        
        }

        //Consultar estado de proceso
        public void consEstPro() {
            try {

                clases.CLSREPPRO reppro = new clases.CLSREPPRO {NROORD_RPP=orden};
                List<clases.CLSREPPRO> lis = reppro.consCanRepPro();
                COR=true;
                RAY=true;
                PRE=true;
                FOR=true;
                C32=true;
                POS=true;
                ESP=true;
                PRF=true;
                GRB=true;
                FLS=true;
                MON=true;
                SOL=true;
                TUB=true;
                SAN=true;
                SUE=true;
                PLA=true;
                VEN=true;
                CMQ=true;
                SLA=true;
                OTROFRM=true;
                TMQ = true;
                proceso = "";
                nompro = "";
                yarepor = 0;
                arepor = 0;

                foreach (clases.CLSREPPRO rep in lis) {
                    switch (rep.CODPRC_RPP)
                    {
                        case "COR":
                        COR = rep.CANREP_RPP < totals ? true : false;
                        CMQ = false;
                        C32 = false;
                        break;
                        case "RAY":
                        RAY = rep.CANREP_RPP < totals ? true : false;   
                        break;
                        case "PRE":
                        PRE = rep.CANREP_RPP < totals ? true : false;                           
                        break;
                        case "FOR":
                        FOR = rep.CANREP_RPP < totals ? true : false;    
                        break;
                        case "C32":
                        C32 = rep.CANREP_RPP < totals ? true : false;
                        CMQ = false;
                        COR = false;
                        break;
                        case "POS":
                        POS = rep.CANREP_RPP < totals ? true : false;    
                        break;
                        case "ESP":
                        ESP = rep.CANREP_RPP < totals ? true : false;    
                        break;
                        case "PRF":
                        PRF = rep.CANREP_RPP < totals ? true : false;    
                        break;
                        case "GRB":
                        GRB = rep.CANREP_RPP < totals ? true : false;        
                        break;
                        case "FLS":
                        FLS = rep.CANREP_RPP < totals ? true : false;        
                        break;
                        case "MON":
                        MON = rep.CANREP_RPP < totals ? true : false;       
                        break;
                        case "SOL":
                        SOL = rep.CANREP_RPP < totals ? true : false;         
                        break;
                        case "TUB":
                        TUB = rep.CANREP_RPP < totals ? true : false;       
                        break;
                        case "SAN":
                        SAN = rep.CANREP_RPP < totals ? true : false;       
                        break;
                        case "SUE":
                        SUE = rep.CANREP_RPP < totals ? true : false;       
                        break;
                        case "PLA":
                        PLA = rep.CANREP_RPP < totals ? true : false;       
                        break;
                        case "VEN":
                        VEN = rep.CANREP_RPP < totals ? true : false;       
                        break;
                        case "CMQ":
                        CMQ = rep.CANREP_RPP < totals ? true : false;
                        C32 = false;
                        COR = false;
                        break;
                        case "SLA":
                        SLA = rep.CANREP_RPP < totals ? true : false;       
                        break;
                        case "OTROFRM":
                        OTROFRM = rep.CANREP_RPP < totals ? true : false;       
                        break;
                        case "TMQ":
                        TMQ = rep.CANREP_RPP < totals ? true : false;       
                        break;
                       default:
                          
                       break;
                    }

                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        //Guardar reporte de novedad
        public void guardar(WrapPanel wpNot) {
            try {
             
                if (!proceso.Equals("COR"))
                {
                    double pororde = (arepor * 100) / totals;
                    clases.CLSREPPRO reppro = new clases.CLSREPPRO
                    {
                        ANO_RPP = DateTime.Today.Year,
                        CANREP_RPP = arepor,
                        CODEMP_RPP = "SAM01",
                        CODPRC_RPP = proceso,
                        ESTADO_RPP = "P",
                        FECREP_RPP = DateTime.Today,
                        NROORD_RPP = orden,
                        PORCEN_RPP =100,
                        SEM_RPP = semana,
                        VLRCTG_RPP = 0,
                        VLRVLR_RPP = 0
                    };

                    if (reppro.insertar() > 0)
                    {
                        new MDOgeneral.notificar(wpNot, "En la novedad del proceso '"+nompro+"'  se reporto '"+arepor+"' unidades satisfactoriamente.", true);
                        consultar();
                      
                    }
                    else
                    {
                        new MDOgeneral.notificar(wpNot, "La novedad del proceso '" + nompro + "' no se puede reportar", false);
                    }

                }
                else {

                    clases.CLSREPPRO reppro1, reppro2, reppro3;
                    List<clases.CLSREPPRO> lisreppro = new List<clases.CLSREPPRO>(); 

                    if (!String.IsNullOrEmpty(codcor1))
                    {
                        
                        reppro1 = new clases.CLSREPPRO
                        {
                            ANO_RPP = DateTime.Today.Year,
                            CANREP_RPP = arepor,
                            CODEMP_RPP = codcor1,
                            CODPRC_RPP = proceso,
                            ESTADO_RPP = "P",
                            FECREP_RPP = DateTime.Today,
                            NROORD_RPP = orden,
                            PORCEN_RPP = porcort1,
                            SEM_RPP = semana,
                            VLRCTG_RPP = 0,
                            VLRVLR_RPP = 0
                        };
                        lisreppro.Add(reppro1);
                    }

                    if (!String.IsNullOrEmpty(codcor2))
                    {

                        reppro2 = new clases.CLSREPPRO
                        {
                            ANO_RPP = DateTime.Today.Year,
                            CANREP_RPP = arepor,
                            CODEMP_RPP = codcor2,
                            CODPRC_RPP = proceso,
                            ESTADO_RPP = "P",
                            FECREP_RPP = DateTime.Today,
                            NROORD_RPP = orden,
                            PORCEN_RPP = porcort2,
                            SEM_RPP = semana,
                            VLRCTG_RPP = 0,
                            VLRVLR_RPP = 0
                        };
                        lisreppro.Add(reppro2);
                    }

                    if (!String.IsNullOrEmpty(codcor3))
                    {
                        reppro3 = new clases.CLSREPPRO
                        {
                            ANO_RPP = DateTime.Today.Year,
                            CANREP_RPP = arepor,
                            CODEMP_RPP = codcor3,
                            CODPRC_RPP = proceso,
                            ESTADO_RPP = "P",
                            FECREP_RPP = DateTime.Today,
                            NROORD_RPP = orden,
                            PORCEN_RPP = porcort3,
                            SEM_RPP = semana,
                            VLRCTG_RPP = 0,
                            VLRVLR_RPP = 0
                        };
                        lisreppro.Add(reppro3);
                    }

                    if (new clases.CLSREPPRO().guaCorte(lisreppro) > 0)
                    {
                        new MDOgeneral.notificar(wpNot, "En la novedad del proceso '" + nompro + "'  se reporto '" + arepor + "' unidades satisfactoriamente.", true);
                        consultar();
                    }
                    else {
                        new MDOgeneral.notificar(wpNot, "La novedad del proceso '" + nompro + "' no se puede reportar", false);
                    }
                }
            }catch (Exception ex) { MessageBox.Show(ex.Message); }
        }
        
        //Imagen de la referencia
        BitmapImage _imagen;
        public BitmapImage imagen
        {
            get { return _imagen; }
            set
            {
                _imagen = value;
                RaisePropertyChangedEvent("imagen");
            }
        }

        private void llenarImagen()
        {
            string Rimagen = "";
            if (File.Exists(MDOgeneral.Fotos_BOSI + codref + ".jpg"))
            {
                Rimagen = MDOgeneral.Fotos_BOSI + codref + ".jpg";
            }
            if (File.Exists(MDOgeneral.Fotos_BOSI + codref+codcol + ".jpg"))
            {
                Rimagen = MDOgeneral.Fotos_BOSI + codref + codcol + ".jpg";
            }
            if (!Rimagen.Equals(""))
            {
                BitmapImage b = new BitmapImage();
                b.BeginInit();
                b.UriSource = new Uri(Rimagen);
                b.EndInit();
                imagen = b;
            }
            else
            {
                imagen = null;
            }
        }
        
        #endregion

        #region propiedades vinculadas a las interfaz
                    
            double _totals;
            public double totals
             {
            get { return _totals; }
            set
            {
                _totals = value;
                RaisePropertyChangedEvent("totals");
            }
        }

            string _proceso="COR";
            public string proceso {
                get { return _proceso; }
                set {
                    if (value.Equals("DEV"))
                    {

                        devcuero.Instance.orden = orden;
                        FRMdevcuero form = new FRMdevcuero();
                        form.Show();
                    }
                    else {
                        _proceso = value;
                    }
                RaisePropertyChangedEvent("proceso");
                }
            }

            string _nompro="Corte";
            public string nompro {
                get { return _nompro; }
                set {
                _nompro = value;
                RaisePropertyChangedEvent("nompro");
                }
            }

            int _semana;
            public int semana {
                get { return _semana; }
                set { _semana = value;
                RaisePropertyChangedEvent("semana");
                }
            }

            string _orden;
            public string orden {
                get { return _orden; }
                set { _orden = value;

                if (!String.IsNullOrEmpty(_orden)) {
                    consultar();                
                }
                RaisePropertyChangedEvent("orden");
                }            
            }

            string _cliente;
            public string cliente
            {
                get { return _cliente; }
                set
                {
                    _cliente = value;
                    RaisePropertyChangedEvent("cliente");
                }
            }

            int _pedido;
            public int pedido
            {
                get { return _pedido; }
                set
                {
                    _pedido = value;
                    RaisePropertyChangedEvent("pedido");
                }
            }

            double _yarepor;
            public double yarepor
            {
                get { return _yarepor; }
                set
                {
                    _yarepor = value;
                    RaisePropertyChangedEvent("yarepor");
                }
            }

            double _arepor;
            public double arepor
            {
                get { return _arepor; }
                set
                {
                    if (_arepor != value) {
                        CAMBIO = true;
                    }
                    _arepor = value;
                    RaisePropertyChangedEvent("arepor");
                }
            }
        
            Boolean _CAMBIO=false;
            public Boolean CAMBIO {
                get { return _CAMBIO; }
                set {
                    _CAMBIO = value;
                    RaisePropertyChangedEvent("CAMBIO");                
                }            
            }

            string _codref;
            public string codref {
                get { return _codref; }
                set { _codref = value;
                RaisePropertyChangedEvent("codref");
                }
            }

            string _codcol;
            public string codcol
            {
                get { return _codcol; }
                set
                {
                    _codcol = value;
                   
                    RaisePropertyChangedEvent("codcol");
                }
            }
        
            string _nomref;
            public string nomref {
                get { return _nomref; }
                set {
                    _nomref = value;
                    RaisePropertyChangedEvent("nomref");
                }
            }
        
            string _cortador1;
            public string cortador1 {
                get { return _cortador1; }
                set {
                    _cortador1 = value;
                    RaisePropertyChangedEvent("cortador1");
                }
            }

            string _cortador2;
            public string cortador2
            {
                get { return _cortador2; }
                set
                {
                    _cortador2 = value;
                    RaisePropertyChangedEvent("cortador2");
                }
            }
        
            string _cortador3;
            public string cortador3
            {
                get { return _cortador3; }
                set
                {
                    _cortador3 = value;
                    RaisePropertyChangedEvent("cortador3");
                }
            }

            string _codcor1;
            public string codcor1
            {
                get { return _codcor1; }
                set
                {
                    _codcor1 = value;
                    RaisePropertyChangedEvent("codcor1");
                }
            }

            string _codcor2;
            public string codcor2
            {
                get { return _codcor2; }
                set
                {
                    _codcor2 = value;
                    RaisePropertyChangedEvent("codcor2");
                }
            }

            string _codcor3;
            public string codcor3
            {
                get { return _codcor3; }
                set
                {
                    _codcor3 = value;
                    RaisePropertyChangedEvent("codcor3");
                }
            }

            double _porcort1;
            public double porcort1
            {
                get { return _porcort1; }
                set
                {
                    _porcort1 = value;
                    RaisePropertyChangedEvent("porcort1");
                }
            }

            double _porcort2;
            public double porcort2
            {
                get { return _porcort2; }
                set
                {
                    _porcort2 = value;
                    RaisePropertyChangedEvent("porcort2");
                }
            }

            double _porcort3;
            public double porcort3
            {
                get { return _porcort3; }
                set
                {
                    _porcort3 = value;
                    RaisePropertyChangedEvent("porcort3");
                }
            }

            string _nomcol;
            public string nomcol
            {
                get { return _nomcol; }
                set
                {
                    _nomcol = value;
                    RaisePropertyChangedEvent("nomcol");
                }
            }

            string _desref;
            public string desref {
                get { return _desref; }
                set {
                    _desref = value;
                    RaisePropertyChangedEvent("desref");
                }
            }

            DateTime _desde;
            public DateTime desde {
                get { return _desde; }
                set { _desde = value;
                    RaisePropertyChangedEvent("desde");
                }
            }

            DateTime _hasta;
            public DateTime hasta
            {
                get { return _hasta; }
                set
                {
                    _hasta = value;
                    RaisePropertyChangedEvent("hasta");
                }
            }

            DateTime _fecrep=DateTime.Today;
            public DateTime fecrep
            {
                get {
                  
                    return _fecrep; }
                set
                {
                    _fecrep = value;
                    RaisePropertyChangedEvent("fecrep");
                }
            }
    
            Boolean _COR=true;
            public Boolean COR {
                get { return _COR; }
                set { _COR = value;
                RaisePropertyChangedEvent("COR");
                }            
            }

            Boolean _RAY=true;
            public Boolean RAY
            {
                get { return _RAY; }
                set
                {
                    _RAY = value;
                    RaisePropertyChangedEvent("RAY");
                }
            }

            Boolean _PRE=true;
            public Boolean PRE
            {
                get { return _PRE; }
                set
                {
                    _PRE = value;
                    RaisePropertyChangedEvent("PRE");
                }
            }

            Boolean _FOR=true;
            public Boolean FOR
            {
                get { return _FOR; }
                set
                {
                    _FOR = value;
                    RaisePropertyChangedEvent("FOR");
                }
            }

            Boolean _C32=true;
            public Boolean C32
            {
                get { return _C32; }
                set
                {
                    _C32 = value;
                    RaisePropertyChangedEvent("C32");
                }
            }

            Boolean _POS=true;
            public Boolean POS
            {
                get { return _POS; }
                set
                {
                    _POS = value;
                    RaisePropertyChangedEvent("POS");
                }
            }

            Boolean _ESP=true;
            public Boolean ESP
            {
                get { return _ESP; }
                set
                {
                    _ESP = value;
                    RaisePropertyChangedEvent("ESP");
                }
            }

            Boolean _PRF=true;
            public Boolean PRF
            {
                get { return _PRF; }
                set
                {
                    _PRF = value;
                    RaisePropertyChangedEvent("PRF");
                }
            }

            Boolean _GRB=true;
            public Boolean GRB
            {
                get { return _GRB; }
                set
                {
                    _GRB = value;
                    RaisePropertyChangedEvent("GRB");
                }
            }

            Boolean _FLS=true;
            public Boolean FLS
            {
                get { return _FLS; }
                set
                {
                    _FLS = value;
                    RaisePropertyChangedEvent("FLS");
                }
            }

            Boolean _MON=true;
            public Boolean MON
            {
                get { return _MON; }
                set
                {
                    _MON = value;
                    RaisePropertyChangedEvent("MON");
                }
            }

            Boolean _SOL=true;
            public Boolean SOL
            {
                get { return _SOL; }
                set
                {
                    _SOL = value;
                    RaisePropertyChangedEvent("SOL");
                }
            }

            Boolean _TUB=true;
            public Boolean TUB
            {
                get { return _TUB; }
                set
                {
                    _TUB = value;
                    RaisePropertyChangedEvent("TUB");
                }
            }

            Boolean _SAN=true;
            public Boolean SAN
            {
                get { return _SAN; }
                set
                {
                    _SAN = value;
                    RaisePropertyChangedEvent("SAN");
                }
            }

            Boolean _SUE=true;
            public Boolean SUE
            {
                get { return _SUE; }
                set
                {
                    _SUE = value;
                    RaisePropertyChangedEvent("SUE");
                }
            }

            Boolean _PLA=true;
            public Boolean PLA
            {
                get { return _PLA; }
                set
                {
                    _PLA = value;
                    RaisePropertyChangedEvent("PLA");
                }
            }

            Boolean _VEN=true;
            public Boolean VEN
            {
                get { return _VEN; }
                set
                {
                    _VEN = value;
                    RaisePropertyChangedEvent("VEN");
                }
            }

            Boolean _CMQ=true;
            public Boolean CMQ
            {
                get { return _CMQ; }
                set
                {
                    _CMQ = value;
                    RaisePropertyChangedEvent("CMQ");
                }
            }

            Boolean _SLA=true;
            public Boolean SLA
            {
                get { return _SLA; }
                set
                {
                    _SLA = value;
                    RaisePropertyChangedEvent("SLA");
                }
            }

            Boolean _OTROFRM=true;
            public Boolean OTROFRM
            {
                get { return _OTROFRM; }
                set
                {
                    _OTROFRM = value;
                    RaisePropertyChangedEvent("OTROFRM");
                }
            }
            
            Boolean _TMQ=true;
            public Boolean TMQ
            {
                get { return _TMQ; }
                set
                {
                    _TMQ = value;
                    RaisePropertyChangedEvent("TMQ");
                }
            }
       
        #endregion

    }
    
}

namespace ReglasValidacion
{
    //Valida la cantidad a reportar
    public class esOKcanrep : ValidationRule
    {
        public produccion.forms.reponovep rnovp { get; set; }

        public override ValidationResult Validate(object value, CultureInfo cultureInfo)
        {
            ValidationResult res;
            if (rnovp != null)
            {
                res = new esOKdouble { Maxc = 11, Minc = 0, Maxv = "*", Minv = "*", Posd = "*" }.Validate(rnovp.arepor, cultureInfo);
                if (!res.IsValid)
                {
                    return new ValidationResult(false, res.ErrorContent.ToString());
                }
                if (rnovp.arepor > (rnovp.totals - rnovp.yarepor))
                {

                    return new ValidationResult(false, "La cantidad a reportar no puede ser mayor que la cantidad total de la orden.");
                }
                if (rnovp.arepor <= 0)
                {
                    return new ValidationResult(false, "La cantidad a reportar debe ser mayor a 0");
                }
            }
          
            return new ValidationResult(true, null);
        }
    }
        
    //Valida que la orden de produccion exista
    public class esOKordpro : ValidationRule
    {
        public produccion.forms.reponovep rnovp { get; set; }

        public override ValidationResult Validate(object value, CultureInfo cultureInfo)
        {

            if (rnovp != null) {
                produccion.clases.CLSENCORDP encOrdPro = new produccion.clases.CLSENCORDP { NROORD_EOP = rnovp.orden };
                if (!encOrdPro.existe()) {

                  return new ValidationResult(false, "La orden  de produccion ingresada no existe.");
               }
            }
     
            return new ValidationResult(true, null);
        }
    }

}

